#include<stdio.h>
#include<string.h>
#include<sys/types.h>
#include<sys/wait.h>
#include<unistd.h>
#include<stdlib.h>
int main()
{
  //测试waitpid第三个参数
  pid_t id = fork();

  if(id == 0)
  {
    //子进程
    int cnt =3;
    
    while(cnt--)
    {
       printf(" child running \n");
       sleep(1);
    }
     //cnt/=0;
    exit(1);
  }

  sleep(3);

  printf("father wait begin \n");
  int status =0;
  while(1)
  {
     pid_t ret =  waitpid(-1,&status,WNOHANG);
     if(ret>0)
     {
        printf("wait success : %d \n",WEXITSTATUS(status));
     }
      else if(ret ==0)
      {
        printf("do father things\n");
      }
      else
      {
        printf("wait fail\n");
        break; 

      }
  }
//  //测试进程等待waitpid第一个和第二个参数
//  pid_t id = fork();
//
//  if(id == 0)
//  {
//    //子进程
//    int cnt =3;
//    
//    while(cnt--)
//    {
//       printf(" child running \n");
//       sleep(1);
//    }
//     //cnt/=0;
//    exit(1);
//  }
//
////sleep(3);
//
//  printf("father wait begin \n");
//  int status =0;
//  waitpid(-1,&status,WNOHANG);
//
//  if(WIFEXITED(status))
//  {
//    printf("wait success : %d \n",WEXITSTATUS(status));
//  }
//  else
//  {
//    printf("wait fail\n");
//  }

  // //代码查看退出码含义
 // for(int i=0; i<130;i++)
 // {
 //     printf("%d:%s\n",i,strerror(i));
 // }
  
  return 0;

}
